Skip to content

feat(search,settings): add search landing page and configurable start tab - #9

Open
The-R0 wants to merge 1 commit into
NihilDigit:mainfrom
The-R0:pr-search-landing-and-start-tab
Open

The-R0 wants to merge 1 commit into
NihilDigit:mainfrom
The-R0:pr-search-landing-and-start-tab

Conversation

@The-R0

@The-R0 The-R0 commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

变化

  • 搜索主页(着陆页)(SearchChatScreen.kt、NormalSearchController.kt、SearchChatViewModel.kt、BilbyApp.kt):
    • 在尚未发起搜索(state.query.isEmpty())时,普通搜索展示居中着陆页(Bilby 字标 + 居中搜索框,下方展示搜索历史或实时输入补全);发出查询后切换为顶栏 + 结果列表。
    • 在搜索结果页侧滑返回,或再次点击底栏/侧栏的「搜索」tab,均会清空当前查询并退回搜索着陆页(与「订阅」「我的」重按回顶语义一致)。
  • 可选择默认启动页(SettingsStore.kt、SettingsViewModel.kt、SettingsPages.kt、BilbyApp.kt):
    • 在「设置 -> 外观」中新增「默认启动页」三档连体按钮组(订阅 / 搜索 / 我的),支持自由选择启动时落入的初始页面。

截图

搜索主页(着陆页) 外观设置 — 默认启动页选择
搜索着陆页 默认启动页设置

@The-R0
The-R0 force-pushed the pr-search-landing-and-start-tab branch from 4c0f3c9 to 5b03f62 Compare November 12, 2026 02:39
… tab

Add a centered search landing page (wordmark + centered search bar with history/suggestions below) before the first query is submitted, with re-pressing the Search tab or swiping back from results returning to it. Add a StartTab setting (Feed / Search / Profile) in Appearance settings so users can choose which tab opens on launch.
@The-R0
The-R0 force-pushed the pr-search-landing-and-start-tab branch from 5b03f62 to ea40b3e Compare November 12, 2026 03:00
@NihilDigit

Copy link
Copy Markdown
Owner

着陆页蛮好看的,不过有几个地方需要调整:

  1. 改由新增设置项控制,保留原有默认行为:StartTab 默认值请保持为 Feed(动态);搜索着陆页也请做成一个新增的设置开关(保留原有的顶栏式空白搜索页分支)。
  2. 着陆页头部可以考虑做成品牌组合:结合应用图标(docs/icon.svg / ic_launcher_foreground.xml 的矢量路径)和内置的 M3E 可变字体 Roboto Flex(ui/theme/FlexFont.kt 的 rememberFlexFont)排成图标 + 字标的品牌页,而不只是单纯的 "Bilby" 文字。
  3. 当前实现的几处细节问题:
    • RootTabs 里的 LaunchedEffect(persistedStartTab) 在设置页修改「默认启动页」时会直接改写 selected 切走当前根页面,冷启动读出配置前也会闪一帧初始页;startTab 应只在冷启动首次初始化时生效。
    • 桌面端宽屏着陆页顶部和中间的 bar(null)(SearchBarRow)各调了一次 rememberCaptionSlot(),窗口最小化/最大化/关闭按钮会重复渲染两套。
    • 手机端 .imePadding() 只加在下半截 weight(3f) 区域上,弹起输入法时上半截不会收缩,底下的历史/联想列表会被挤得很窄。
    • SearchChatViewModel.backToLanding() 里需要一并取消 search() 中可能还在跑的短链解析协程,避免退回着陆页后旧请求返回又触发跳转。

另外 #8 合入后搜索历史和联想列表会有改动,rebase 时需要一起对齐下。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants